package com.warm.base.design.b_responsibility;

/**
 * @Date: 2019/11/22 14:07
 * @Author: LChuang
 * @Description: 责任链模式(行为型)
 *
 *      使多个对象都有机会处理请求，从而避免请求的发送者和接受者之间的耦合关系。
 *      将这些对象连成一条链，并沿着这条链传递该请求，直到有一个对象处理它为止。
 */
public class Client {

    /**
     * 抽象处理者（Handler）角色：该角色对请求进行抽象，并定义一个方法来设定和返回对下一个处理者的引用。
     *
     * 具体处理者（Concrete Handler）：该角色接到请求后，可以选择将请求处理掉，或者将请求传给下一个处理者。
     *   由于具体处理者持有对下一个处理者的引用，因此，如果需要，处理者可以访问下一个处理者。
     */
    public static void main(String[] args) {
        Handler h1 = new ConcreteHandlerA();
        Handler h2 = new ConcreteHandlerB();
        h1.setNextHandler(h2);
        h1.handleRequest();
    }
}
